#ifndef QUADRUPLET_H
#define QUADRUPLET_H

/*!
 * \file quadruplet.h
 * \brief Header of template Quadruplet<T>
 * \author Benjamin Toueg
 * \version 20.05.09
 */

template <typename T>
class Quadruplet
{
public:
    T start;
    T previous;
    T current;
    T next;

    Quadruplet():start(),previous(),current(),next() {}
    Quadruplet(const T& a, const T& b, const T& c, const T& d):start(a),previous(b),current(c),next(d) {}
    Quadruplet(const Quadruplet& copy):start(copy.start),previous(copy.previous),current(copy.current),next(copy.next) {}
};

template <typename T> class Quadruplet;
template <typename T>
inline std::ostream& operator<<(std::ostream& out, const Quadruplet<T>& q)
{
    out << "(" << q.previous << ", " << q.current << ", " << q.next << ")";
    return out;
}

#endif // QUADRUPLET_H
